package com.drg.center.entity.result;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @Author: zhangxilin
 * @Date: 2024/5/31
 */
@ApiModel("患者出院病例信息")
@Data
public class PatientCaseOutVO implements Serializable {

    @ApiModelProperty("病例号")
    private String caseCode;

    @ApiModelProperty("病例类型（1:低倍率病例，2:高倍率病例）")
    private Integer caseType;

    @ApiModelProperty("医保类型（1:患者费别变更，2:贵重药品用药，3:医保自费项目，4:医保限门诊项目，5:医保限工伤项目，6:医保限专项目，7:医保单项材料超千元项目，8:医保限二专项目，9:医保辅助治疗项目）")
    private Integer medicalType;

    @ApiModelProperty("出院情况（1:治愈，2:好转，3:未愈，4:死亡，9:其他）")
    private Integer outCondition;

    @ApiModelProperty("医保报销金额")
    private BigDecimal reimburseCost;

    @ApiModelProperty("自付金额")
    private BigDecimal selfCost;

    @ApiModelProperty("住院号")
    private String inpatientCode;

    @ApiModelProperty("床位号")
    private String bedCode;

    @ApiModelProperty("医生编码")
    private String doctorCode;

    @ApiModelProperty("医生姓名")
    private String doctorName;

    @ApiModelProperty("科室编号")
    private String departCode;

    @ApiModelProperty("科室名称")
    private String departName;

    @ApiModelProperty("就诊日期")
    @JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime visitDate;

    @ApiModelProperty("慢特病门诊科室编号")
    private String specialDepartCode;

    @ApiModelProperty("慢特病门诊科室名称")
    private String specialDepartName;

    @ApiModelProperty("慢特病就诊日期")
    @JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime specialVisitDate;

    @ApiModelProperty("总费用")
    private BigDecimal totalCost;

    @ApiModelProperty("医保结算费用")
    private BigDecimal settleCost;

    @ApiModelProperty("药品费用")
    private BigDecimal medicineCost;

    @ApiModelProperty("耗材费用")
    private BigDecimal consumablesCost;

    @ApiModelProperty("住院费用")
    private BigDecimal inHospitalCost;

    @ApiModelProperty("手术费用")
    private BigDecimal operationCost;

    @ApiModelProperty("麻醉费用")
    private BigDecimal anesthesiaCost;

    @ApiModelProperty("检查费用")
    private BigDecimal inspectCost;

    @ApiModelProperty("检验费用")
    private BigDecimal testCost;

    @ApiModelProperty("入院日期")
    @JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime inHospitalDate;

    @ApiModelProperty("出院日期")
    @JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime outHospitalDate;

    @ApiModelProperty("结算日期")
    @JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime settleDate;

    @ApiModelProperty("住院天数")
    private Integer inpatientDays;

    @ApiModelProperty("医疗类型（1.住院，2.日间手术）")
    private String treatType;

    @ApiModelProperty("治疗类别（1.西医，2.中医-2.1中医；2.2.民族医，3.中西医")
    private String treatClass;

    @ApiModelProperty("入院途径（1.急诊，2.门诊，3.其他医疗机构转入，9.其他）")
    private String intoChannel;

    @ApiModelProperty("呼吸机使用时间")
    private String ventilatorUseTime;

    @ApiModelProperty("入院前颅脑损伤病人昏迷时间")
    private String beforeComaTime;

    @ApiModelProperty("入院后颅脑损伤病人昏迷时间")
    private String afterComaTime;

    @ApiModelProperty("输血品种")
    private String transBloodVariety;

    @ApiModelProperty("输血量")
    private String transBloodQuantity;

    @ApiModelProperty("输血计量单位")
    private String transBloodUnit;

    @ApiModelProperty("特级护理天数")
    private Integer premiumCareDays;

    @ApiModelProperty("一级护理天数")
    private Integer firstCareDays;

    @ApiModelProperty("二级护理天数")
    private Integer secondCareDays;

    @ApiModelProperty("三级护理天数")
    private Integer thirdCareDays;

    @ApiModelProperty("离院方式（1.医嘱离院，2.医嘱转院、转社区、转卫生院机构，3.非遗嘱离院，4.死亡，9.其他）")
    private String outType;

    @ApiModelProperty("outType为2时，拟接收机构代码")
    private String acceptCode;

    @ApiModelProperty("outType为2时，拟接收机构名称")
    private String acceptName;

    @ApiModelProperty("是否有离院31天再住院计划")
    private Boolean isContinue;

    @ApiModelProperty("再住院目的")
    private String continuePurpose;

    @ApiModelProperty("门诊中医诊断")
    private String chinaDiagnosis;

    @ApiModelProperty("门诊中医诊断疾病代码")
    private String chinaDiseaseCode;

    @ApiModelProperty("门诊西医诊断")
    private String westernDiagnosis;

    @ApiModelProperty("门诊西医诊断疾病代码")
    private String westernDiseaseCode;

    @ApiModelProperty("结算期间开始日期")
    @JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate settleStartDate;

    @ApiModelProperty("结算期间结束日期")
    @JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate settleEndDate;

    @ApiModelProperty("结算业务流水号")
    private String businessNo;

    @ApiModelProperty("医保支付方式（1.按项目，2.单病种，3.按病种分值，4.疾病诊断相关分组DRG，5.按床日，6.按人头，9.其他）")
    private String payType;

    @ApiModelProperty("医疗机构填报部门")
    private String submitDept;

    @ApiModelProperty("医疗机构填报人")
    private String submitPerson;

    @ApiModelProperty("患者信息")
    private PatientCasePersonInfoVO personInfoVO;

    @ApiModelProperty("重症监护信息列表")
    private List<PatientCaseCustodyVO> custodyVOS;

    @ApiModelProperty("诊断信息列表")
    private List<PatientCaseDiagnosisVO> diagnosisVOS;

    @ApiModelProperty("手术操作信息列表")
    private List<PatientCaseOperationVO> operationVOS;

    @ApiModelProperty("慢特病诊断信息列表")
    private List<PatientCaseDiagnosisVO> specialDiagnosisVOS;

    @ApiModelProperty("慢特病手术操作信息列表")
    private List<PatientCaseOperationVO> specialOperationVOS;

    @ApiModelProperty("费用明细信息列表")
    private List<PatientCaseCostVO> costVOS;

    @ApiModelProperty("医嘱信息列表")
    private List<PatientCaseAdviceVO> adviceVOS;

    @ApiModelProperty("医疗收费信息列表")
    private List<TreatCostVO> treatCostVOS;

    @ApiModelProperty("基金支付信息列表")
    private List<FundCostVO> fundCostVOS;

    @ApiModelProperty("个人支付信息列表")
    private List<SelfCostVO> selfCostVOS;

    @ApiModelProperty("是否医保拒付")
    private Boolean protestStatus;

    @ApiModelProperty("拒付金额")
    private BigDecimal protestMoney;

    @ApiModelProperty("拒付原因")
    private String protestReason;

    @ApiModelProperty("拒付备注")
    private String protestRemark;

    @ApiModelProperty("拒付日期")
    @JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate protestDate;

    @ApiModelProperty("基准点数")
    private BigDecimal basisPoints;

    @ApiModelProperty("倍率（2：高倍率， 1： 低倍率）")
    private Integer magnification;

    @ApiModelProperty("病历点数")
    private BigDecimal casePoints;

    @ApiModelProperty("RW值")
    private BigDecimal rw;

    @ApiModelProperty("医保结算费用")
    private BigDecimal settleMoney;

    @ApiModelProperty("预计费用")
    private BigDecimal expectCost;

    @ApiModelProperty("结算费用")
    private BigDecimal totalSettleCost;

    @ApiModelProperty("基金费用")
    private BigDecimal fundCost;

    @ApiModelProperty("超支费用")
    private BigDecimal overExpectCost;

    @ApiModelProperty("死亡风险（1：低风险死亡 2:中低风险死亡 3: 中高风险死亡 4:高风险死亡  ）")
    private Integer dealthRisk;

    @ApiModelProperty("是否手术")
    private Boolean hasOperation;

    @ApiModelProperty("是否超长住院病历")
    private Boolean isOverlengthIn;

    @ApiModelProperty("是否低标入院风险病例")
    private Boolean isLowStandardIn;

    @ApiModelProperty("科室控制标准超额金额")
    private BigDecimal controlStandard;

    @ApiModelProperty("科室总额预付超额金额")
    private BigDecimal prePayTotal;

    @ApiModelProperty("科室单病种付费超额金额")
    private BigDecimal caseBasedPayment;

    @ApiModelProperty("医生控制标准超额金额")
    private BigDecimal controlStandardDoctor;

    @ApiModelProperty("医生总额预付超额金额")
    private BigDecimal prePayTotalDoctor;

    @ApiModelProperty("医生单病种付费超额金额")
    private BigDecimal caseBasedPaymentDoctor;

    @ApiModelProperty("亏损因素")
    private String lossReason;

    @ApiModelProperty("超支影响")
    private String overEffect;

}
